GEMS Telemetry

Get and parse data sent to GEMS website. Data from 2025-06-23 to present.

Get Data

Get data from website.

Use start_date parameter to limit download.

Add row, type, send and line number

Separate data into post times, met, status, and adv data

Warning: Expected 9 pieces. Missing pieces filled with `NA` in 4 rows [1, 2, 9816,
9817].

reshape rga data

Filter bad data before timestamping adv data

Calculate per-send means

Warning: There were 4472 warnings in `summarise()`.
The first warning was:
ℹ In argument: `across(...)`.
ℹ In group 1: `send = 1`.
Caused by warning in `mean.default()`:
! argument is not numeric or logical: returning NA
ℹ Run `dplyr::last_dplyr_warnings()` to see the 4471 remaining warnings.
Warning: There were 4218 warnings in `summarise()`.
The first warning was:
ℹ In argument: `across(...)`.
ℹ In group 1: `send = 96`.
Caused by warning in `mean.default()`:
! argument is not numeric or logical: returning NA
ℹ Run `dplyr::last_dplyr_warnings()` to see the 4217 remaining warnings.

Status

Last post was 2025-07-10 12:30:25

How many status lines are in the wrong year?

Joining with `by = join_by(send)`

Teensy Temp

Junction temp of Surface teensy. Runs at 50C at room temp. >95C kills teensies.

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Warning: Removed 960 rows containing missing values or values outside the scale range
(`geom_segment()`).

Battery

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Warning: Removed 3 rows containing missing values or values outside the scale range
(`geom_segment()`).

Turbo

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Warning: Removed 3 rows containing missing values or values outside the scale range
(`geom_segment()`).
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Warning: Removed 3 rows containing missing values or values outside the scale range
(`geom_segment()`).

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

RGA

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_smooth()`).
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Warning: Removed 1 row containing non-finite outside the scale range
(`stat_smooth()`).
Warning: Removed 1 row containing missing values or values outside the scale range
(`geom_point()`).

Oxygen

Carbon dioxide

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

Methane

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Warning: Removed 609 rows containing non-finite outside the scale range
(`stat_smooth()`).

Hydrogen sulphide

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Warning: Removed 336 rows containing non-finite outside the scale range
(`stat_smooth()`).

ADV

Pressure/Depth

ADV Correlation

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

ADV Amplitude

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

ADV Vertical Velocity

Warning: Removed 72 rows containing missing values or values outside the scale range
(`geom_pointrange()`).
Warning: Removed 691 rows containing missing values or values outside the scale range
(`geom_segment()`).

ADV Alongshore Velocity

ADV set up with x axis parallel to shore. Positive is North.

Warning: Removed 30 rows containing missing values or values outside the scale range
(`geom_segment()`).

ADV Onshore velocity

Positive is offshore

Warning: Removed 30 rows containing missing values or values outside the scale range
(`geom_segment()`).

IMU data

`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
Warning: Failed to fit group -1.
Caused by error in `gam.reparam()`:
! NA/NaN/Inf in foreign function call (arg 3)
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'
`geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

Data issues

Bad Packets

Garbled status or data packets. These need to be filtered out before timestamping. These should be caught on the lander by adding a checksum. Also need to check whether data is corrupted from ADV-lander, lander-surface, or surface-web.

Out of order packets

Not sure what causes this. Happening on the server side. Maybe parallel processing of POST requests? Handled by sorting each send by packet number.

Missing data

Missing data includes bad packets. Need to separate out.

Joining with `by = join_by(send)`
`summarise()` has grouped output by 'send'. You can override using the
`.groups` argument.

Post times

timestamp send row_count
2025-07-10 09:20:24 2222 500
2025-07-10 09:30:25 2223 500
2025-07-10 09:40:25 2224 500
2025-07-10 09:50:25 2225 500
2025-07-10 10:00:25 2226 500
2025-07-10 10:10:25 2227 500
2025-07-10 10:20:25 2228 500
2025-07-10 10:30:26 2229 500
2025-07-10 10:40:25 2230 500
2025-07-10 10:50:25 2231 500
2025-07-10 11:00:25 2232 500
2025-07-10 11:10:25 2233 500
2025-07-10 11:20:25 2234 500
2025-07-10 11:30:25 2235 500
2025-07-10 11:40:25 2236 500
2025-07-10 11:50:25 2237 500
2025-07-10 12:00:25 2238 500
2025-07-10 12:10:25 2239 499
2025-07-10 12:20:25 2240 500
2025-07-10 12:30:25 2241 500

Lines per post

Warning: Removed 3 rows containing missing values or values outside the scale range
(`geom_point()`).